package com.yyfax.pay.depository.vo;

import com.yyfax.pay.common.enums.FuiouDepositStateEnum;
import com.yyfax.pay.depository.domain.FuiouArtificialRegister;

/**
 * 法人开户快照类
 * 
 * @author buyi
 * @date 2018-01-15 14:27:26
 * @since v2.0.7
 */
public class ArtificialRegisterVO {
	private FuiouArtificialRegister po;

	public static ArtificialRegisterVO newInstance(FuiouArtificialRegister po) {
		return new ArtificialRegisterVO(po);
	}

	private ArtificialRegisterVO(FuiouArtificialRegister po) {
		super();
		this.po = po;
	}

	public FuiouArtificialRegister getPo() {
		return po;
	}

	public void setPo(FuiouArtificialRegister po) {
		this.po = po;
	}
	
	/**
	 * 判断订单是已经出结果
	 * 
	 * @author buyi
	 * @date 2018-01-15 10:55:59
	 * @since v2.0.7
	 * @return 如果已经出结果返回true；否则返回false
	 */
	public boolean isResult() {
		if (po == null) {
			return false;
		}

		if (!FuiouDepositStateEnum.INI.isValue(po.getState())) {
			// 如果订单不是初始化状态，则表示订单已经出结果,富友存管开户接口不支持幂等，如果是处理中的状态，业务任务是订单结果，等待查询策略确认最终状态
			return true;
		}

		return false;
	}

	/**
	 * 是否需要查询
	 * 
	 * @author buyi
	 * @date 2018-01-16 17:21:35
	 * @since v2.0.4
	 *
	 * @return
	 */
	public boolean isQuery() {
		if (po == null) {
			return false;
		}

		if (FuiouDepositStateEnum.DEALING.isValue(po.getState()) || FuiouDepositStateEnum.ACCEPTED.isValue(po.getState())
				|| FuiouDepositStateEnum.TIMEOUT.isValue(po.getState())) {
			// 如果订单状态是处理中，或者待确认，则返回表示需要查询
			return true;
		}

		return false;
	}

}
